package com.teamcloud.common.util;

import javax.servlet.http.HttpServletRequest;

public class PagingUtil {
	
	/** 한 페이지당 행 갯수 */
	private final static int ROWS_PER_PAGE_SIZE = 10;
	
	/** 한 블럭당 페이지 갯수 */
	private final static int PAGE_PER_BLOCK_SIZE = 10;

	/**
	 * 페이징 처리하는 HTML 을 생성한다.
	 * @param request
	 * @param rowCount	검색된 전체 행 갯수
	 * @param offset	현재 행 번호
	 * @param jsFunction
	 * @return
	 */
	public static String out(HttpServletRequest request, int rowCount, int offset, String jsFunction) {
		
		StringBuffer result = new StringBuffer();
		
		String requestUri = request.getRequestURI();
		
		//전체 페이지 수를 구한다.
	    int pageCount = rowCount / ROWS_PER_PAGE_SIZE;	
	    if ( rowCount % ROWS_PER_PAGE_SIZE != 0 )
	    	pageCount = (int) pageCount + 1;
	     
	    //페이지 번호를 출력
	    for (int i = 0; i < pageCount; i++) {
	    	result.append("<a href='" + requestUri + "?offset=" + (i * ROWS_PER_PAGE_SIZE) + "' onclick='" + jsFunction + "(" + (i * ROWS_PER_PAGE_SIZE) + ");return false;'>" + ( i + 1 ) + "</a> ");
	    }
	    
	    //데이터가 한 페이지 이상이면 Next 버튼을 보여준다.
	    if (rowCount > ROWS_PER_PAGE_SIZE) {
	    	
	    	//마지막 페이지가 아니면 다음 페이지로
		    if (( offset / ROWS_PER_PAGE_SIZE ) != ( pageCount - 1 )) {
		    	result.append("<a href='" + requestUri + "?offset=" + (offset + ROWS_PER_PAGE_SIZE) + "' onclick='" + jsFunction + "(" + (offset + ROWS_PER_PAGE_SIZE) + ");return false;'>Next</a>");
		    }
		    
		    //마지막 페이지이면	현재 페이지
		    else {  
		    	result.append("<a href='" + requestUri + "?offset=" + ((pageCount - 1) * ROWS_PER_PAGE_SIZE) + "' onclick='" + jsFunction + "(" + ((pageCount - 1) * ROWS_PER_PAGE_SIZE) + ");return false;'>Next</a>");
		    }
		    
	    }
		
		
		return result.toString();
	}
}
